#include "../src/estructuras/cGamma/cGamma.h"
#include <iostream>
using namespace std;

void test_cGamma(){
	cout<<"incia test_cGamma():"<<endl;
	tListaBytes* bytes = new tListaBytes();
	cGamma* cgamma = new cGamma();
	
	int numeroCodificar;
	cout<<"ingrese numero(distancia): "<<endl;
	cin>>numeroCodificar;
	int decodificado = 0;

	//codifico 'numero' en gamma y el resultado lo cargo en una lista de bytes
	bytes = cgamma->codificacion(numeroCodificar);

	//creo un iterador para la lista de bytes
	tIteradorListaBytes itBytes = bytes->iterador();
	//recorro la lista de bytes y la imprimo por pantalla
	cout<<"codificado: ";
	while (itBytes.tieneSiguiente()){
		uchar actual = itBytes.siguiente();
		//lo casteo a unsigned int para que se pueda interpretar el resultado.
		//por ejemplo: gamma de 10 en numero binario es '1110010', y como uchar tiene 8 bits,
		//y el resultado de gamma de 10 tiene 7 bits, entonces devuelve '11100100' = 228.
		//ese '0' demas tendra muy encuenta ya que si el numero es 1234565, entonces en vez
		//de el ultimo 5 me devuelve un 4. y asi hasta el 9. Lo voy a arreglar si es necesario
		cout<<(uint)actual<<" ";
	}
	cout<<endl;

	//decodifico la lista de byte devueltos por la codificacion
	decodificado = cgamma->decodificacion(bytes);
	cout<<"decodificado: "<<decodificado<<endl;

	//resultado limite: si numero = 1234565, entonces en vez de el ultimo 5 me devuelve un 4. y asi hasta el 9.
	}
